package cn.tedu.oop;

import org.junit.jupiter.api.Test;

/*本类用作抽象测试的入门案例
* */
public class AbstractDemo {
    @Test
    public void test(){
       // 抽象类不可以实例化
     //   new Animal()
        Animal animal=new Pig();
        animal.eat();
        animal.fly();
    }
}

abstract class  Animal {
    public void eat(){
        System.out.println("吃哈都行");
    }
    public void play(){
        System.out.println("玩啥都行");
    }
   //创建抽象方法
    /*被abstract修饰的类是抽象类 修饰的方法是抽象方法，抽象方法没有方法体
    * 如果一个类中存在了抽象方法，那么这个类必须定义为抽象类*/
    public abstract void fly();
    public abstract void fly1();
}
/*当一个子类继承了抽象父类以后，有两种解决方案
* 1.子类变为抽象类
* 2.子类实现父类中的所有抽象方法*/
//方案一
/*abstract class Pig extends Animal {*/
 class Pig extends Animal {
//方案二
    @Override
    public void fly() {
        System.out.println("猪鼻子插葱装象");
    }

    @Override
    public void fly1() {
        System.out.println("抽象父类中的所有抽象方法都要被实现");
    }
}
